#include <iostream>

#include "edaBestImprSelect.h"
#include "edaHC.h"
#include "loNetList.hpp"
#include "loScriptMove.hpp"
#include "loScriptMoveNext.hpp"
#include "sisInterface.h"

int main(int argc, char **argv)
{
  //if (argc != 2 )
  //{
  //  std::cerr << "Usage : ./loHCSearch [instance]" << std::endl;
  //  return 1;
  //}

  srand(1000);

  // start SIS
  sisInit();

  loNetList netlist( argv[1] );

  loScriptMove script;
  loScriptMoveNext scriptNext( 0, 5 );
  edaBestImprSelect moveSelect;

  edaHC hcSearch( &script,
		  &scriptNext, 
		  &moveSelect );

  std::cout << "[From Fitness] " << netlist.fullEvaluate() << std::endl;
  hcSearch.search( netlist );
  std::cout << "[To Fitness] " << netlist.fullEvaluate() << std::endl;

  // end SIS
  sisEnd();

  return 0;
}
